﻿Imports System.Data.SqlClient
Imports UTNComputers.clsCliente

Public Class daoCliente
    'Funcion para el alta de Clientes'
    Public Function Alta(ByVal Cliente As clsCliente) As Boolean
        Dim Cn As New SqlConnection
        Dim Cm As New SqlCommand

        Try
            Cn.ConnectionString = My.Resources.Conexion
            Cn.Open()
            Cm.CommandType = CommandType.StoredProcedure
            Cm.CommandText = "SP_ALTA_CLIENTE"

            Cm.Parameters.Add("@cli_id", SqlDbType.Int)
            Cm.Parameters.Add("@nombre", SqlDbType.VarChar)
            Cm.Parameters.Add("@apellido", SqlDbType.VarChar)
            Cm.Parameters.Add("@direccion", SqlDbType.VarChar)
            Cm.Parameters.Add("@altura", SqlDbType.VarChar)
            Cm.Parameters.Add("@depto", SqlDbType.VarChar)
            Cm.Parameters.Add("@dni", SqlDbType.VarChar)
            Cm.Parameters.Add("@tel", SqlDbType.VarChar)
            Cm.Parameters.Add("@cuit", SqlDbType.VarChar)
            Cm.Parameters.Add("@email", SqlDbType.VarChar)
            Cm.Parameters.Add("@tipo", SqlDbType.VarChar)
            Cm.Parameters.Add("@Cod_Suc", SqlDbType.Int)

            Cm.Parameters("@cli_id").Value = Cliente.Cli_Id
            Cm.Parameters("@nombre").Value = Cliente.Nombre.Trim.ToUpper
            Cm.Parameters("@apellido").Value = Cliente.Apellido.Trim.ToUpper
            Cm.Parameters("@direccion").Value = Cliente.Direccion.Trim.ToUpper
            Cm.Parameters("@altura").Value = Cliente.Altura.Trim.ToUpper
            Cm.Parameters("@depto").Value = Cliente.Depto.Trim.ToUpper
            Cm.Parameters("@dni").Value = Cliente.Dni.Trim.ToUpper
            Cm.Parameters("@tel").Value = Cliente.Tel.Trim.ToUpper
            Cm.Parameters("@cuit").Value = Cliente.Cuit.Trim.ToUpper
            Cm.Parameters("@email").Value = Cliente.Email.Trim.ToUpper
            Cm.Parameters("@tipo").Value = Cliente.Tipo.Trim.ToUpper
            Cm.Parameters("@Cod_Suc").Value = Cliente.Cod_Suc


            Cm.Connection = Cn

            Cm.ExecuteNonQuery()
            Cn.Close()
            Return True

        Catch ex As Exception
            Return False
        Finally
            Cn.Dispose()
            Cm.Dispose()
        End Try
    End Function

    'Funcion para la modificacion de Clientes'
    Public Function Modificar(ByVal Cliente As clsCliente) As Boolean
        Dim Cn As New SqlConnection
        Dim Cm As New SqlCommand

        Try
            Cn.ConnectionString = My.Resources.Conexion
            Cn.Open()
            Cm.CommandType = CommandType.StoredProcedure
            Cm.CommandText = "SP_MODI_CLIENTE"

            Cm.Parameters.Add("@cli_id", SqlDbType.Int)
            Cm.Parameters.Add("@nombre", SqlDbType.VarChar)
            Cm.Parameters.Add("@apellido", SqlDbType.VarChar)
            Cm.Parameters.Add("@direccion", SqlDbType.VarChar)
            Cm.Parameters.Add("@altura", SqlDbType.VarChar)
            Cm.Parameters.Add("@depto", SqlDbType.VarChar)
            Cm.Parameters.Add("@dni", SqlDbType.VarChar)
            Cm.Parameters.Add("@tel", SqlDbType.VarChar)
            Cm.Parameters.Add("@cuit", SqlDbType.VarChar)
            Cm.Parameters.Add("@email", SqlDbType.VarChar)
            Cm.Parameters.Add("@tipo", SqlDbType.VarChar)
            Cm.Parameters.Add("@Cod_Suc", SqlDbType.Int)

            Cm.Parameters("@cli_id").Value = Cliente.Cli_Id
            Cm.Parameters("@nombre").Value = Cliente.Nombre.Trim.ToUpper
            Cm.Parameters("@apellido").Value = Cliente.Apellido.Trim.ToUpper
            Cm.Parameters("@direccion").Value = Cliente.Direccion.Trim.ToUpper
            Cm.Parameters("@altura").Value = Cliente.Altura.Trim.ToUpper
            Cm.Parameters("@depto").Value = Cliente.Depto.Trim.ToUpper
            Cm.Parameters("@dni").Value = Cliente.Dni.Trim.ToUpper
            Cm.Parameters("@tel").Value = Cliente.Tel.Trim.ToUpper
            Cm.Parameters("@cuit").Value = Cliente.Cuit.Trim.ToUpper
            Cm.Parameters("@email").Value = Cliente.Email.Trim.ToUpper
            Cm.Parameters("@tipo").Value = Cliente.Tipo.Trim.ToUpper
            Cm.Parameters("@Cod_Suc").Value = Cliente.Cod_Suc

            Cm.Connection = Cn

            Cm.ExecuteNonQuery()
            Cn.Close()
            Return True

        Catch ex As Exception
            Return False
        Finally
            Cn.Dispose()
            Cm.Dispose()
        End Try
    End Function

    'Funcion para Traer un Cliente por Id'
    Public Function TraeCliente(ByVal cli_id As Integer) As clsCliente
        Dim Cn As New SqlClient.SqlConnection
        Dim Cm As New SqlClient.SqlCommand
        Dim Dr As SqlClient.SqlDataReader
        Dim Cliente As New clsCliente()

        Dim Conf As New clsConfiguraciones()
        Dim dao_Conf As New daoConfiguraciones()
        Conf = dao_Conf.TraeConfiguraciones()

        Try
            Cn.ConnectionString = My.Resources.Conexion
            Cn.Open()
            Cm.CommandType = CommandType.StoredProcedure
            Cm.CommandText = "SP_TRAER_CLIENTE"

            Cm.Parameters.Add("@cli_id", SqlDbType.Int)
            Cm.Parameters("@cli_id").Value = cli_id
            Cm.Parameters.Add("@Cod_Suc", SqlDbType.Int)
            Cm.Parameters("@Cod_Suc").Value = Conf.Cod_Suc

            Cm.Connection = Cn
            Dr = Cm.ExecuteReader
            If Dr.HasRows = True Then
                While Dr.Read
                    Cliente.Cli_Id = Dr.GetInt32(0)
                    Cliente.Nombre = Dr.GetString(1).Trim.ToUpper
                    Cliente.Apellido = Dr.GetString(2).Trim.ToUpper

                    If Dr.IsDBNull(3) Then
                        Cliente.Direccion = "-"
                    Else
                        Cliente.Direccion = Dr.GetString(3).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(4) Then
                        Cliente.Altura = "-"
                    Else
                        Cliente.Altura = Dr.GetString(4).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(5) Then
                        Cliente.Depto = "-"
                    Else
                        Cliente.Depto = Dr.GetString(5).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(6) Then
                        Cliente.Dni = "-"
                    Else
                        Cliente.Dni = Dr.GetString(6).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(7) Then
                        Cliente.Tel = "-"
                    Else
                        Cliente.Tel = Dr.GetString(7).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(8) Then
                        Cliente.Cuit = "-"
                    Else
                        Cliente.Cuit = Dr.GetString(8).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(9) Then
                        Cliente.Email = "-"
                    Else
                        Cliente.Email = Dr.GetString(9).Trim.ToUpper
                    End If

                    Cliente.Tipo = Dr.GetString(10).Trim.ToUpper
                    Cliente.Cod_Suc = Dr.GetInt32(11)
                End While

                Dr.Close()
                Cn.Close()
            End If
            Return Cliente
        Catch ex As Exception
            Throw New Exception(ex.Message)
        Finally
            Conf.Dispose()
            Cn.Dispose()
            Cm.Dispose()
        End Try
    End Function

    'Funcion para Traer un Cliente por DNI'
    Public Function TraeClienteDNI(ByVal dni As String) As clsCliente
        Dim Cn As New SqlClient.SqlConnection
        Dim Cm As New SqlClient.SqlCommand
        Dim Dr As SqlClient.SqlDataReader
        Dim Cliente As New clsCliente()

        Dim Conf As New clsConfiguraciones()
        Dim dao_Conf As New daoConfiguraciones()
        Conf = dao_Conf.TraeConfiguraciones()

        Try
            Cn.ConnectionString = My.Resources.Conexion
            Cn.Open()
            Cm.CommandType = CommandType.StoredProcedure
            Cm.CommandText = "SP_TRAER_CLIENTE_X_DNI"

            Cm.Parameters.Add("@dni", SqlDbType.VarChar)
            Cm.Parameters("@dni").Value = dni.Trim.ToUpper
            Cm.Parameters.Add("@Cod_Suc", SqlDbType.Int)
            Cm.Parameters("@Cod_Suc").Value = Conf.Cod_Suc

            Cm.Connection = Cn
            Dr = Cm.ExecuteReader
            If Dr.HasRows = True Then
                While Dr.Read
                    Cliente.Cli_Id = Dr.GetInt32(0)
                    Cliente.Nombre = Dr.GetString(1).Trim.ToUpper
                    Cliente.Apellido = Dr.GetString(2).Trim.ToUpper

                    If Dr.IsDBNull(3) Then
                        Cliente.Direccion = "-"
                    Else
                        Cliente.Direccion = Dr.GetString(3).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(4) Then
                        Cliente.Altura = "-"
                    Else
                        Cliente.Altura = Dr.GetString(4).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(5) Then
                        Cliente.Depto = "-"
                    Else
                        Cliente.Depto = Dr.GetString(5).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(6) Then
                        Cliente.Dni = "-"
                    Else
                        Cliente.Dni = Dr.GetString(6).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(7) Then
                        Cliente.Tel = "-"
                    Else
                        Cliente.Tel = Dr.GetString(7).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(8) Then
                        Cliente.Cuit = "-"
                    Else
                        Cliente.Cuit = Dr.GetString(8).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(9) Then
                        Cliente.Email = "-"
                    Else
                        Cliente.Email = Dr.GetString(9).Trim.ToUpper
                    End If

                    Cliente.Tipo = Dr.GetString(10).Trim.ToUpper
                    Cliente.Cod_Suc = Dr.GetInt32(11)
                End While

                Dr.Close()
                Cn.Close()
            End If
            Return Cliente
        Catch ex As Exception
            Throw New Exception(ex.Message)
        Finally
            Conf.Dispose()
            Cn.Dispose()
            Cm.Dispose()
        End Try
    End Function

    'Funcion para Traer Todos los Clientes'
    Public Function TraeClientes() As List(Of clsCliente)
        Dim Cn As New SqlClient.SqlConnection
        Dim Cm As New SqlClient.SqlCommand
        Dim Dr As SqlClient.SqlDataReader
        Dim ListaClientes As New List(Of clsCliente)

        Dim Conf As New clsConfiguraciones()
        Dim dao_Conf As New daoConfiguraciones()
        Conf = dao_Conf.TraeConfiguraciones()

        Try
            Cn.ConnectionString = My.Resources.Conexion
            Cn.Open()
            Cm.CommandType = CommandType.StoredProcedure
            Cm.CommandText = "SP_TRAER_CLIENTES_TODOS"
            Cm.Parameters.Add("@Cod_Suc", SqlDbType.Int)
            Cm.Parameters("@Cod_Suc").Value = Conf.Cod_Suc

            Cm.Connection = Cn
            Dr = Cm.ExecuteReader
            If Dr.HasRows = True Then
                While Dr.Read
                    Dim Cliente As New clsCliente()
                    Cliente.Cli_Id = Dr.GetInt32(0)
                    Cliente.Nombre = Dr.GetString(1).Trim.ToUpper
                    Cliente.Apellido = Dr.GetString(2).Trim.ToUpper

                    If Dr.IsDBNull(3) Then
                        Cliente.Direccion = "-"
                    Else
                        Cliente.Direccion = Dr.GetString(3).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(4) Then
                        Cliente.Altura = "-"
                    Else
                        Cliente.Altura = Dr.GetString(4).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(5) Then
                        Cliente.Depto = "-"
                    Else
                        Cliente.Depto = Dr.GetString(5).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(6) Then
                        Cliente.Dni = "-"
                    Else
                        Cliente.Dni = Dr.GetString(6).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(7) Then
                        Cliente.Tel = "-"
                    Else
                        Cliente.Tel = Dr.GetString(7).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(8) Then
                        Cliente.Cuit = "-"
                    Else
                        Cliente.Cuit = Dr.GetString(8).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(9) Then
                        Cliente.Email = "-"
                    Else
                        Cliente.Email = Dr.GetString(9).Trim.ToUpper
                    End If

                    Cliente.Tipo = Dr.GetString(10).Trim.ToUpper
                    Cliente.Cod_Suc = Dr.GetInt32(11)

                    ListaClientes.Add(Cliente)
                    Cliente.Dispose()
                End While

                Dr.Close()
                Cn.Close()
            End If
            Return ListaClientes
        Catch ex As Exception
            Throw New Exception(ex.Message)
        Finally
            Conf.Dispose()
            Cn.Dispose()
            Cm.Dispose()
        End Try
    End Function

    'Funcion para Traer Clientes por Nombre'
    Public Function TraeClientesNombre(ByVal Nombre As String) As List(Of clsCliente)
        Nombre = "%" & Nombre & "%"
        Dim Cn As New SqlClient.SqlConnection
        Dim Cm As New SqlClient.SqlCommand
        Dim Dr As SqlClient.SqlDataReader
        Dim ListaClientes As New List(Of clsCliente)

        Dim Conf As New clsConfiguraciones()
        Dim dao_Conf As New daoConfiguraciones()
        Conf = dao_Conf.TraeConfiguraciones()

        Try
            Cn.ConnectionString = My.Resources.Conexion
            Cn.Open()
            Cm.CommandType = CommandType.StoredProcedure
            Cm.CommandText = "SP_TRAER_CLIENTE_X_NOMBRE"

            Cm.Parameters.Add("@nombre", SqlDbType.VarChar)
            Cm.Parameters("@nombre").Value = Nombre
            Cm.Parameters.Add("@Cod_Suc", SqlDbType.Int)
            Cm.Parameters("@Cod_Suc").Value = Conf.Cod_Suc

            Cm.Connection = Cn
            Dr = Cm.ExecuteReader
            If Dr.HasRows = True Then
                While Dr.Read
                    Dim Cliente As New clsCliente()
                    Cliente.Cli_Id = Dr.GetInt32(0)
                    Cliente.Nombre = Dr.GetString(1).Trim.ToUpper
                    Cliente.Apellido = Dr.GetString(2).Trim.ToUpper

                    If Dr.IsDBNull(3) Then
                        Cliente.Direccion = "-"
                    Else
                        Cliente.Direccion = Dr.GetString(3).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(4) Then
                        Cliente.Altura = "-"
                    Else
                        Cliente.Altura = Dr.GetString(4).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(5) Then
                        Cliente.Depto = "-"
                    Else
                        Cliente.Depto = Dr.GetString(5).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(6) Then
                        Cliente.Dni = "-"
                    Else
                        Cliente.Dni = Dr.GetString(6).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(7) Then
                        Cliente.Tel = "-"
                    Else
                        Cliente.Tel = Dr.GetString(7).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(8) Then
                        Cliente.Cuit = "-"
                    Else
                        Cliente.Cuit = Dr.GetString(8).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(9) Then
                        Cliente.Email = "-"
                    Else
                        Cliente.Email = Dr.GetString(9).Trim.ToUpper
                    End If

                    Cliente.Tipo = Dr.GetString(10).Trim.ToUpper
                    Cliente.Cod_Suc = Dr.GetInt32(11)

                    ListaClientes.Add(Cliente)
                    Cliente.Dispose()
                End While

                Dr.Close()
                Cn.Close()
            End If
            Return ListaClientes
        Catch ex As Exception
            Throw New Exception(ex.Message)
        Finally
            Conf.Dispose()
            Cn.Dispose()
            Cm.Dispose()
        End Try
    End Function

    'Funcion para Traer Clientes por Apellido'
    Public Function TraeClientesApellido(ByVal Apellido As String) As List(Of clsCliente)
        Apellido = "%" & Apellido & "%"
        Dim Cn As New SqlClient.SqlConnection
        Dim Cm As New SqlClient.SqlCommand
        Dim Dr As SqlClient.SqlDataReader
        Dim ListaClientes As New List(Of clsCliente)

        Dim Conf As New clsConfiguraciones()
        Dim dao_Conf As New daoConfiguraciones()
        Conf = dao_Conf.TraeConfiguraciones()

        Try
            Cn.ConnectionString = My.Resources.Conexion
            Cn.Open()
            Cm.CommandType = CommandType.StoredProcedure
            Cm.CommandText = "SP_TRAER_CLIENTE_X_APELLIDO"

            Cm.Parameters.Add("@apellido", SqlDbType.VarChar)
            Cm.Parameters("@apellido").Value = Apellido
            Cm.Parameters.Add("@Cod_Suc", SqlDbType.Int)
            Cm.Parameters("@Cod_Suc").Value = Conf.Cod_Suc

            Cm.Connection = Cn
            Dr = Cm.ExecuteReader
            If Dr.HasRows = True Then
                While Dr.Read
                    Dim Cliente As New clsCliente()
                    Cliente.Cli_Id = Dr.GetInt32(0)
                    Cliente.Nombre = Dr.GetString(1).Trim.ToUpper
                    Cliente.Apellido = Dr.GetString(2).Trim.ToUpper

                    If Dr.IsDBNull(3) Then
                        Cliente.Direccion = "-"
                    Else
                        Cliente.Direccion = Dr.GetString(3).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(4) Then
                        Cliente.Altura = "-"
                    Else
                        Cliente.Altura = Dr.GetString(4).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(5) Then
                        Cliente.Depto = "-"
                    Else
                        Cliente.Depto = Dr.GetString(5).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(6) Then
                        Cliente.Dni = "-"
                    Else
                        Cliente.Dni = Dr.GetString(6).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(7) Then
                        Cliente.Tel = "-"
                    Else
                        Cliente.Tel = Dr.GetString(7).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(8) Then
                        Cliente.Cuit = "-"
                    Else
                        Cliente.Cuit = Dr.GetString(8).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(9) Then
                        Cliente.Email = "-"
                    Else
                        Cliente.Email = Dr.GetString(9).Trim.ToUpper
                    End If

                    Cliente.Tipo = Dr.GetString(10).Trim.ToUpper
                    Cliente.Cod_Suc = Dr.GetInt32(11)

                    ListaClientes.Add(Cliente)
                    Cliente.Dispose()
                End While

                Dr.Close()
                Cn.Close()
            End If
            Return ListaClientes
        Catch ex As Exception
            Throw New Exception(ex.Message)
        Finally
            Conf.Dispose()
            Cn.Dispose()
            Cm.Dispose()
        End Try
    End Function


    Public Function TraeArticulosPorSucursalTipo(ByVal Cod_Suc As Int32, ByVal Tipo As String) As List(Of clsCliente)
        Dim Cn As New SqlClient.SqlConnection
        Dim Cm As New SqlClient.SqlCommand
        Dim Dr As SqlClient.SqlDataReader
        Dim ListaClientes As New List(Of clsCliente)

        Try
            Cn.ConnectionString = My.Resources.Conexion
            Cn.Open()
            Cm.CommandType = CommandType.StoredProcedure
            Cm.CommandText = "SP_TRAER_CLIENTES_TODOS_SUC_TIPO"

            Cm.Parameters.Add("@Cod_Suc", SqlDbType.Int)
            Cm.Parameters("@Cod_Suc").Value = Cod_Suc

            Cm.Parameters.Add("@tipo", SqlDbType.VarChar)
            Cm.Parameters("@tipo").Value = Tipo

            Cm.Connection = Cn
            Dr = Cm.ExecuteReader
            If Dr.HasRows = True Then
                While Dr.Read
                    Dim Cliente As New clsCliente()
                    Cliente.Cli_Id = Dr.GetInt32(0)
                    Cliente.Nombre = Dr.GetString(1).Trim.ToUpper
                    Cliente.Apellido = Dr.GetString(2).Trim.ToUpper

                    If Dr.IsDBNull(3) Then
                        Cliente.Direccion = "-"
                    Else
                        Cliente.Direccion = Dr.GetString(3).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(4) Then
                        Cliente.Altura = "-"
                    Else
                        Cliente.Altura = Dr.GetString(4).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(5) Then
                        Cliente.Depto = "-"
                    Else
                        Cliente.Depto = Dr.GetString(5).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(6) Then
                        Cliente.Dni = "-"
                    Else
                        Cliente.Dni = Dr.GetString(6).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(7) Then
                        Cliente.Tel = "-"
                    Else
                        Cliente.Tel = Dr.GetString(7).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(8) Then
                        Cliente.Cuit = "-"
                    Else
                        Cliente.Cuit = Dr.GetString(8).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(9) Then
                        Cliente.Email = "-"
                    Else
                        Cliente.Email = Dr.GetString(9).Trim.ToUpper
                    End If

                    Cliente.Tipo = Dr.GetString(10).Trim.ToUpper
                    Cliente.Cod_Suc = Dr.GetInt32(11)

                    ListaClientes.Add(Cliente)
                    Cliente.Dispose()
                End While

                Dr.Close()
                Cn.Close()
            End If
            Return ListaClientes
        Catch ex As Exception
            Throw New Exception(ex.Message)
        Finally
            Cn.Dispose()
            Cm.Dispose()
        End Try
    End Function

    'Funcion para Traer un Cliente por Id'
    Public Function TraeClienteCodSuc(ByVal cli_id As Integer, ByVal Cod_Suc As Int32) As clsCliente
        Dim Cn As New SqlClient.SqlConnection
        Dim Cm As New SqlClient.SqlCommand
        Dim Dr As SqlClient.SqlDataReader
        Dim Cliente As New clsCliente()


        Try
            Cn.ConnectionString = My.Resources.Conexion
            Cn.Open()
            Cm.CommandType = CommandType.StoredProcedure
            Cm.CommandText = "SP_TRAER_CLIENTE"

            Cm.Parameters.Add("@cli_id", SqlDbType.Int)
            Cm.Parameters("@cli_id").Value = cli_id
            Cm.Parameters.Add("@Cod_Suc", SqlDbType.Int)
            Cm.Parameters("@Cod_Suc").Value = Cod_Suc

            Cm.Connection = Cn
            Dr = Cm.ExecuteReader
            If Dr.HasRows = True Then
                While Dr.Read
                    Cliente.Cli_Id = Dr.GetInt32(0)
                    Cliente.Nombre = Dr.GetString(1).Trim.ToUpper
                    Cliente.Apellido = Dr.GetString(2).Trim.ToUpper

                    If Dr.IsDBNull(3) Then
                        Cliente.Direccion = "-"
                    Else
                        Cliente.Direccion = Dr.GetString(3).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(4) Then
                        Cliente.Altura = "-"
                    Else
                        Cliente.Altura = Dr.GetString(4).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(5) Then
                        Cliente.Depto = "-"
                    Else
                        Cliente.Depto = Dr.GetString(5).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(6) Then
                        Cliente.Dni = "-"
                    Else
                        Cliente.Dni = Dr.GetString(6).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(7) Then
                        Cliente.Tel = "-"
                    Else
                        Cliente.Tel = Dr.GetString(7).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(8) Then
                        Cliente.Cuit = "-"
                    Else
                        Cliente.Cuit = Dr.GetString(8).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(9) Then
                        Cliente.Email = "-"
                    Else
                        Cliente.Email = Dr.GetString(9).Trim.ToUpper
                    End If

                    Cliente.Tipo = Dr.GetString(10).Trim.ToUpper
                    Cliente.Cod_Suc = Dr.GetInt32(11)
                End While

                Dr.Close()
                Cn.Close()
            End If
            Return Cliente
        Catch ex As Exception
            Throw New Exception(ex.Message)
        Finally
            Cn.Dispose()
            Cm.Dispose()
        End Try
    End Function

    '---------------------------------------------------------------------
    ' Constructor de la Clase
    '---------------------------------------------------------------------
    Public Sub New()

        MyBase.New()

    End Sub

    '---------------------------------------------------------------------
    ' Destructor de la Clase
    '---------------------------------------------------------------------
    Public Sub Dispose()

        MyBase.Finalize()

    End Sub

End Class
